home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / grafik / 3d & render tools / irit / contrib / scripts / atv.irt < prev    next >
Encoding:
Text File  |  1996-07-16  |  10.2 KB  |  488 lines

  1. #
  2. #    All Terrain Vehicle - ATV (Trucktoron)
  3. #
  4. #   This model is based on the Polaris Trail Boss ATV.
  5. #
  6. #   Written by:
  7. #
  8. #    Eran Yahav    s2556713@csc
  9. #    Zviki Cohen    zviki@tx
  10. #
  11. #
  12. #   Special thanks goes to...
  13. #
  14. #    Sela Gershony - for sketching the model
  15. #    Noy Cohen - for taking pictures of the model
  16. #
  17.  
  18. resolution = 30;
  19.  
  20. iritstate( "Coplanar", TRUE);
  21.  
  22.  
  23. engineSide = poly(list(
  24.     vector( 0.0, 0.0, 0.0 ),
  25.     vector( 0.0, 1.0, 0.0 ),
  26.     vector( 3.0, 1.3, 0.0 ),
  27.     vector( 3.1, 0.7, 0.0 ),
  28.     vector( 2.6, 0.7, 0.0 ),
  29.     vector( 2.4, 0.0, 0.0 )),
  30.     FALSE);
  31.  
  32. engine = extrude( engineSide, vector (0,0,-1));
  33.  
  34.  
  35. seatSide = 
  36.  
  37.     cbspline(3, list ( 
  38.         vector(0.0, 1.0, 0.0 ) , 
  39.         vector(0.0, 1.0, 0.0 ) , 
  40.         vector(3.0, 1.3, 0.0 ) ) ,
  41.     list(KV_OPEN)) +
  42.  
  43.     cbspline(3, list ( 
  44.         vector(3.0, 1.3, 0.0 ) ,
  45.         vector(3.0, 1.3, 0.0 ) ,
  46.         vector(3.0, 2.0, 0.0 ) ) ,
  47.     list(KV_OPEN)) +
  48.  
  49.     cbspline(3, list (
  50.         vector(3.0, 2.0, 0.0 ) ,
  51.         vector(1.8, 1.8, 0.0 ) ,
  52.         vector(1.1, 2.0, 0.0 ) ,
  53.         vector(0.5, 2.6, 0.0 ) ) ,
  54.     list(KV_OPEN) ) +
  55.  
  56.     cbspline(3, list (
  57.         vector( 0.5, 2.6, 0.0 ) ,
  58.         vector(-0.1, 2.4, 0.0 ) ,
  59.         vector(-0.8, 2.1, 0.0 ) ,
  60.         vector(-1.9, 1.5, 0.0 ) ) ,
  61.     list(KV_OPEN) ) +
  62.     
  63.     cbspline(3, list (
  64.         vector(-1.9, 1.5, 0.0 ) ,
  65.         vector(-0.8, 1.45, 0.0 ) ,
  66.         vector(-0.4, 1.4, 0.0 ) ,
  67.         vector( 0.0, 1.0, 0.0 ) ) ,
  68.     list(KV_OPEN) )    
  69. ;
  70.     
  71. seat = list (
  72.     extrude( seatSide, vector (0,0,-1)) ,
  73.     boolone( seatSide ) ,
  74.     ( boolone( seatSide ) * trans( vector ( 0, 0, -1) ) ) ) ;
  75.  
  76.  
  77. body = list (seat, engine);
  78.  
  79.  
  80. bottomCurve = cbspline( 3,
  81.     list (
  82.         vector( -0.37600, 0.56600, 0.0000 ) ,
  83.         vector( -0.24400, 0.56200, 0.0000 ) ,
  84.         vector( -0.21200, 0.52600, 0.0000 ) ,
  85.         vector( -0.29200, 0.45000, 0.00000 ) ,
  86.         vector( -0.28800, 0.43000, 0.00000 ) ,
  87.         vector( -0.18400, 0.26800, 0.00000 ) ,
  88.         vector( -0.16400, 0.26000, 0.00000 ) ,
  89.         vector( 0.02400, 0.22800, 0.00000 ) ,
  90.         vector( 0.06000, 0.11200, 0.00000 ) ,
  91.         vector( 0.06000 ,-0.20400, 0.00000 ) ,
  92.         vector( -0.00800 ,-0.26400, 0.00000 ) ,
  93.         vector( -0.22000 ,-0.26400, 0.00000 ) ,
  94.         vector( -0.27200 ,-0.28400, 0.00000 ) ,
  95.         vector( -0.30000 ,-0.52400, 0.00000 ) ) ,
  96.     list(KV_OPEN));
  97.  
  98. bottom1 = bottomCurve  * scale(vector(0.8,1.0,1.0));
  99. bottom2 = bottom1 * roty(180) * trans(vector(-0.6,0,0));
  100. bottomSide = bottom2 + (-bottom1);
  101. bottomClose = ruledsrf ( bottom1, bottom2 );
  102.  
  103. bottom = list (
  104.     extrude( bottomSide, vector (0,0,0.01)) ,
  105.     bottomClose ,
  106.     (bottomClose * trans(vector(0,0,0.01))) );
  107.  
  108. bottom = bottom    * roty(90) * rotz(90) * scale(vector(4.5,3.5,3.5))
  109.     * trans(vector(1.21,0,-1.549));
  110.  
  111. # front wings
  112.  
  113. fwCrv1 = cbspline(3, list (
  114.     vector(-1.9, 1.5,  0.0 ) ,
  115.     vector(-0.8, 1.45, 0.0 ) ,
  116.     vector(-0.4, 1.4,  0.0 ) ,
  117.     vector( 0.0, 1.0,  0.0 ) ,
  118.     vector( 0.0, 1.0,  0.0 ) ,
  119.     vector( 0.0, 0.0,  0.0 ) ) , list(KV_OPEN));
  120.  
  121. fwCrv2 = cbspline(3, list (
  122.     vector(-1.9, 1.6,  0.3 ) ,
  123.     vector(-0.8, 1.95, 0.3 ) ,
  124.     vector(-0.4, 1.9,  0.3 ) ,
  125.     vector(-0.2, 1.5,  0.3 ) ,
  126.     vector( 0.0, 0.9,  0.3 ) ,
  127.     vector( 0.2, 0.5,  0.3 ) ,
  128.     vector( 0.3, 0.0,  0.3 ) ) , list(KV_OPEN));
  129.  
  130. fwCrv3 = cbspline(3, list (
  131.     vector(-1.9, 1.6,  0.7 ) ,
  132.     vector(-0.8, 1.95, 0.7 ) ,
  133.     vector(-0.4, 1.9,  0.7 ) ,
  134.     vector(-0.2, 1.5,  0.7 ) ,
  135.     vector( 0.0, 0.9,  0.7 ) ,
  136.     vector( 0.2, 0.5,  0.7 ) ,
  137.     vector( 0.3, 0.0,  0.7 ) ) , list(KV_OPEN));
  138.  
  139. fwCrv4 = cbspline(3, list (
  140.     vector(-1.9, 1.5,  1.0 ) ,
  141.     vector(-0.8, 1.45, 1.0 ) ,
  142.     vector(-0.4, 1.4,  1.0 ) ,
  143.     vector( 0.0, 0.0,  1.0 ) ) , list(KV_OPEN));
  144.  
  145.  
  146. fwCrvs1 = list(fwCrv1, fwCrv2, fwCrv3, fwCrv4);
  147.  
  148. fwCrvs2 = list(
  149.     (fwCrv4 * trans( vector( 0, 0, -1.0 ) ) ),
  150.     (fwCrv3 * trans( vector( 0, 0, -0.4 ) ) ),
  151.     (fwCrv2 * trans( vector( 0, 0,  0.4 ) ) ),
  152.     (fwCrv1 * trans( vector( 0, 0,  1.0 ) ) )
  153. );
  154.  
  155. frontWing1 = sfromcrvs(fwCrvs1,4);
  156. frontWing2 = sfromcrvs(fwCrvs2,4) * trans( vector(0.0, 0.0, -2.0) );
  157. frontWings = list(frontWing1, frontWing2);
  158.  
  159.  
  160. # back wings
  161.  
  162. bkCrv1 = cbspline(3, list (
  163.     vector( 2.2, 0.0,  0.0 ) ,
  164.     vector( 2.4, 1.0,  0.0 ) ,
  165.     vector( 2.6, 1.3,  0.0 ) ,
  166.     vector( 3.0, 1.6,  0.0 ) ,
  167.     vector( 4.2, 1.6,  0.0 ) ) , list(KV_OPEN));
  168.  
  169. bkCrv2 = cbspline(3, list (
  170.     vector( 2.2, 0.0,  0.3 ) ,
  171.     vector( 2.4, 1.5,  0.3 ) ,
  172.     vector( 2.6, 1.8,  0.3 ) ,
  173.     vector( 3.0, 2.1,  0.3 ) ,
  174.     vector( 4.2, 1.6,  0.3 ) ) , list(KV_OPEN));
  175.  
  176. bkCrv3 = cbspline(3, list (
  177.     vector( 2.2, 0.0,  0.7 ) ,
  178.     vector( 2.4, 1.5,  0.7 ) ,
  179.     vector( 2.6, 1.8,  0.7 ) ,
  180.     vector( 3.0, 2.1,  0.7 ) ,
  181.     vector( 4.2, 1.6,  0.7 ) ) , list(KV_OPEN));
  182.  
  183. bkCrv4 = cbspline(3, list (
  184.     vector( 2.2, 0.0,  1.0 ) ,
  185.     vector( 2.4, 1.0,  1.0 ) ,
  186.     vector( 2.6, 1.3,  1.0 ) ,
  187.     vector( 3.0, 1.6,  1.0 ) ,
  188.     vector( 4.2, 1.6,  1.0 ) ) , list(KV_OPEN));
  189.  
  190.  
  191.  
  192.  
  193. bkCrvs1 = list(bkCrv1, bkCrv2, bkCrv3, bkCrv4);
  194.  
  195. bkCrvs2 = list(
  196.     (bkCrv4 * trans( vector( 0, 0, -1.0 ) ) ),
  197.     (bkCrv3 * trans( vector( 0, 0, -0.4 ) ) ),
  198.     (bkCrv2 * trans( vector( 0, 0,  0.4 ) ) ),
  199.     (bkCrv1 * trans( vector( 0, 0,  1.0 ) ) )
  200. );
  201.  
  202. backWing1 = sfromcrvs(bkCrvs1,4);
  203. backWing2 = sfromcrvs(bkCrvs2,4) * trans( vector(0.0, 0.0, -2.0) );
  204. backWings = list(backWing1, backWing2);
  205.  
  206. wings = list (frontWings, backWings);
  207.  
  208. # wheels
  209.  
  210. out = torus (
  211.     vector( 0.0, 0.0, 0.0 ) ,     # center
  212.     vector( 0.0, 0.0, 1.0 ) ,     # normal
  213.     1.6 , 0.7 );
  214.  
  215. in = cylin (
  216.     vector( 0.0, 0.0, 0.0 ) ,     # center
  217.     vector( 0.0, 0.0, 0.6 ) ,     # direction
  218.     1.2 );
  219.  
  220. in = in * trans( vector( 0,0,-0.3));
  221.  
  222. wheel = list (in, out) ;
  223.  
  224. attrib ( in,     "rgb", "125,125,160"     );
  225. attrib ( out,     "rgb", "15,15,15"     );
  226. attrib ( in,     "reflect", 0.8);
  227. attrib ( out,     "reflect", 0);
  228.  
  229.  
  230. wheel = wheel * scale( vector(0.42,0.42,0.60));
  231.  
  232. wheel1 = wheel * trans( vector( -0.9, 0.0, -1.55 ) );
  233. wheel2 = wheel * trans( vector( -0.9, 0.0, 0.55 ) );
  234. wheel3 = wheel * trans( vector( 3.2, 0.0, -1.55 ) );
  235. wheel4 = wheel * trans( vector( 3.2, 0.0, 0.55 ) );
  236.  
  237. wheels = list( wheel1, wheel2, wheel3, wheel4 );
  238.  
  239.  
  240.  
  241. #back axle ( backAxle)
  242.  
  243. bxShort = cylin (
  244.     vector ( 3.3, 0.0, -0.5 ), 
  245.     vector ( -0.3, 0.0, 0.0 ),
  246.     0.2 );
  247.  
  248. bxLong = cylin (
  249.     vector ( 3.2, 0.0, 0.55 ), 
  250.     vector ( 0.0, 0.0, -2 ),
  251.     0.05 );
  252.  
  253. bxUp = cylin (
  254.     vector ( 3.2, 0.0, -0.5 ), 
  255.     vector ( -0.6, 0.7, 0.0 ),
  256.     0.055 );
  257.  
  258. backAxle = list ( bxLong, bxShort, bxUp );
  259.  
  260.  
  261. # Front Axle
  262.  
  263.  
  264. # Front Triangle
  265.  
  266. frTri = list (
  267.     cylin (
  268.         vector ( -2.1, 1.35, 0.4 ),
  269.         vector ( 0.0, 0.0, -1.8 ),
  270.         0.09 ),
  271.     cylin (
  272.         vector ( -2.1, 1.35, 0.2 ),
  273.         vector ( 1.1, -1.35, -0.5 ),
  274.         0.05 ),
  275.     cylin (
  276.         vector ( -2.1, 1.35, -1.2 ),
  277.         vector ( 1.1, -1.35, 0.5 ),
  278.         0.05 ),
  279.     cylin (
  280.         vector ( -2.1, 1.35, -0.5 ),
  281.         vector ( 1.1, -1.35, 0.0 ),
  282.         0.05 ),
  283.     cylin (
  284.         vector ( -2.1, 1.35, 0.2 ),
  285.         vector ( 0.5,  0.15, -0.3 ),
  286.         0.05 ),
  287.     cylin (
  288.         vector ( -2.1, 1.35, -1.2 ),
  289.         vector ( 0.5,  0.15, 0.3 ),
  290.         0.05 )    
  291. );
  292.  
  293. frAxle = list (
  294.     cylin (
  295.         vector ( -0.9, 0.0, 0.55 ),
  296.         vector ( 0.0, 0.0, -2 ),
  297.         0.05 )
  298. );
  299.  
  300.  
  301. frontAxle = list ( frTri , frAxle);
  302.  
  303.  
  304. axles = list ( backAxle, frontAxle);
  305.  
  306.  
  307. # front light
  308.  
  309. lightBox = box ( vector( 0.3, 2.5, -0.2 ), -1.3, -0.7, -0.6 );
  310.  
  311. lightBulb = box ( vector( 0.3, 2.4, -0.3 ), -1.32, -0.4, -0.4 );
  312.  
  313. attrib ( lightBox,     "rgb", "150,150,150"     );
  314. attrib ( lightBulb,     "rgb", "200,200,10"     );
  315.  
  316. light = list (lightBox, lightBulb) 
  317.     * rotz( -15 ) * trans(vector(-0.21,0.05,0));
  318.  
  319.  
  320. attrib( light, "reflect", 0.9 );
  321.  
  322. # steering 
  323.  
  324. strCirc = circle( vector(0,0,0), 0.04 );
  325.  
  326. strShape1 = cbspline( 3,
  327.     list (
  328.         vector ( -0.4  , 2.6, -0.5 ) ,
  329.         vector ( -0.3  , 2.9, -0.2 ) ,
  330.         vector ( -0.15 , 3.2,  0.1 ) ,
  331.         vector (  0.0  , 3.5,  0.3 ) ,
  332.         vector (  0.0  , 3.55, 0.5 ) ,
  333.         vector (  0.05 , 3.6,  0.7 ) ,
  334.         vector (  0.1  , 3.6,  0.9 ) ),
  335.     list ( KV_OPEN )
  336. );
  337.  
  338. strShape2 = cbspline( 3,
  339.     list (
  340.         vector (  0.1  , 3.6, -1.9 ) ,
  341.         vector (  0.05 , 3.6, -1.7 ) ,
  342.         vector (  0.0  , 3.55,-1.5 ) ,
  343.         vector (  0.0  , 3.5, -1.3 ) ,
  344.         vector ( -0.15 , 3.2, -1.1 ) ,
  345.         vector ( -0.3  , 2.9, -0.8 ) ,
  346.         vector ( -0.4  , 2.6, -0.5 ) ) ,
  347.     list ( KV_OPEN )
  348. );
  349.  
  350. str1 = sweepsrf( strCirc, strShape1, OFF );
  351. str2 = sweepsrf ( strCirc, strShape2, OFF );
  352.  
  353. steer = list ( str1, str2 );
  354.  
  355. frontAcc = list ( light, steer );
  356.  
  357.  
  358. # back accessories
  359.  
  360. # lowNet
  361.  
  362. netCirc = circle( vector(0,0,0), 0.07 );
  363.  
  364. netY = 2.0;
  365.  
  366. netFrame = cbspline ( 3,
  367.     list (
  368.         vector ( 3.1, netY, -0.5 ) ,
  369.         vector ( 3.1, netY, -1.1 ) ,
  370.         vector ( 2.6, netY, -1.1 ) ,
  371.         vector ( 2.6, netY, -2.0 ) ,
  372.         vector ( 4.1, netY, -2.0 ) ,
  373.         vector ( 4.1, netY, -1.1 ) ,
  374.         vector ( 4.4, netY, -1.1 ) ,
  375.         vector ( 4.4, netY,  0.1 ) ,
  376.         vector ( 4.1, netY,  0.1 ) ,
  377.         vector ( 4.1, netY,  1.0 ) ,
  378.         vector ( 2.6, netY,  1.0 ) ,
  379.         vector ( 2.6, netY,  0.1 ) ,
  380.         vector ( 3.1, netY,  0.1 ) ,
  381.         vector ( 3.1, netY, -0.5 ) 
  382.     ),
  383.     list ( KV_OPEN ) 
  384. );
  385.  
  386. net = sweepsrf( netCirc, netFrame, OFF );
  387.  
  388. lowBars = list ( 
  389.     cylin ( 
  390.         vector ( 2.9 , netY, -1.1 ) ,
  391.         vector ( 1.25,  0.0,  0.0 ) , 
  392.         0.055
  393.     ) ,
  394.     cylin ( 
  395.         vector ( 2.9 , netY,  0.1 ) ,
  396.         vector ( 1.25,  0.0,  0.0 ) , 
  397.         0.055
  398.     ) ,
  399.     cylin ( 
  400.         vector ( 3.6, netY, -2.0 ) ,
  401.         vector ( 0.0,  0.0,  3.0 ) , 
  402.         0.055
  403.     )
  404. );
  405.  
  406. lowNet = list ( net, lowBars );
  407.  
  408.  
  409. # upper bars
  410.  
  411. bigCirc = circle( vector(0,0,0), 0.065 );
  412.  
  413. bigShape = cbspline ( 3 , 
  414.     list (
  415.         vector ( 2.63, 2.0, -1.7 ) ,
  416.         vector ( 2.6, 3.0, -2.0 ) ,
  417.         vector ( 4.1, 6.0, -1.6 ) ,
  418.         vector ( 4.1, 6.0, -1.6 ) ,
  419. #        vector ( 4.1, 6.0, -1.6 ) ,
  420. #        vector ( 4.1, 6.0,  0.6 ) ,
  421.         vector ( 4.1, 6.0,  0.6 ) ,
  422.         vector ( 4.1, 6.0,  0.6 ) ,
  423.         vector ( 2.6, 3.0,  1.0 ) ,
  424.         vector ( 2.63, 2.0,  0.7 )
  425.     ),
  426.     list ( KV_OPEN ) 
  427. );
  428.  
  429. bigBars = sweepsrf ( bigCirc, bigShape, OFF ) ;
  430.  
  431. upperBars =  list ( 
  432.     cylin ( 
  433.         vector ( 4.1 ,  6.0, -1.5 ) ,
  434.         vector ( 0.0 , -4.0,  0.0  ) , 
  435.         0.055
  436.     ) ,
  437.     cylin ( 
  438.         vector ( 4.1,  6.0,  0.5 ) ,
  439.         vector ( 0.0, -4.0,  0.0  ) , 
  440.         0.055
  441.     ) ,
  442.     cylin ( 
  443.         vector ( 4.1 ,  6.0, -1.0 ) ,
  444.         vector ( 0.3 , -4.0,  0.0  ) , 
  445.         0.045
  446.     ) ,
  447.     cylin ( 
  448.         vector ( 4.1,  6.0,  0.0 ) ,
  449.         vector ( 0.3, -4.0,  0.0  ) , 
  450.         0.045
  451.     )
  452. );
  453.  
  454. upperNet = list ( upperBars, bigBars );
  455.  
  456.  
  457. backAcc = list ( lowNet, upperNet );
  458.  
  459. accessories = list ( backAcc, frontAcc );
  460.  
  461. # coloring !
  462.  
  463. attrib ( seat,         "rgb", "040,040,240"     );
  464. attrib ( engine,     "rgb", "40,45,40"     );
  465. attrib ( axles,     "rgb", "20,20,60"     );
  466. attrib ( bottom,     "rgb", "40,20,15"     );
  467. attrib ( frontWings,     "rgb", "150,150,150"     );
  468. attrib ( backWings,     "rgb", "140,140,140"     );
  469. attrib ( steer,     "rgb", "100,20,20"     );
  470. attrib ( upperNet,     "rgb", "0,0,60"     );
  471. attrib ( lowNet,     "rgb", "020,020,255"     );
  472. attrib ( frontAxle,     "rgb", "30,0,0"     );
  473. attrib ( backAxle,     "rgb", "30,0,0"     );
  474.  
  475.  
  476. # assembling the complete ATV 
  477.  
  478. atv = list( accessories, axles, wheels, bottom, body, wings );
  479.  
  480.  
  481. viewstate("DblBuffer");
  482. view(list(atv),TRUE);
  483.  
  484. # save("atv",atv);
  485.  
  486.  
  487.  
  488.